package com.wilmer.stemCourseCon.service;

import com.wilmer.common.core.domain.entity.SysDept;
import com.wilmer.stemCourseCon.domain.StemCourseCon;
import com.wilmer.stemCourseCon.domain.TreeSelect2;

import java.util.List;


public interface StemCourseConService {
    /**
     * 查询课程结构管理数据
     */
    public List<StemCourseCon> selectStemCourseConList(StemCourseCon stemCourseCon);

    /**
     * 查询课程结构树结构信息
     */
    public List<TreeSelect2> selectStemCourseConTreeList(StemCourseCon stemCourseCon);

    /**
     * 构建前端所需要树结构
     */
    public List<StemCourseCon> buildStemCourseConTree(List<StemCourseCon> stemCourseCons);

    /**
     * 构建前端所需要下拉树结构
     */
    public List<TreeSelect2> buildStemCourseConTreeSelect(List<StemCourseCon> stemCourseCons);


    /**
     * 根据课程结构ID查询信息
     */
    public StemCourseCon selectStemCourseConById(Long stemCourseConId);

    /**
     * 根据ID查询所有子课程结构（正常状态）
     */
    public int selectNormalChildrenStemCourseConById(Long stemCourseConId);

    /**
     * 是否存在课程结构子节点
     */
    public boolean hasChildByStemCourseConId(Long stemCourseConId);

    /**
     * 查询课程结构是否存在课程
     */
    public boolean checkStemCourseConExistUser(Long stemCourseConId);

    /**
     * 校验课程结构名称是否唯一
     */
    public boolean checkStemCourseConNameUnique(StemCourseCon stemCourseCon);

    /**
     * 校验课程结构是否有数据权限
     */
    public void checkStemCourseConDataScope(Long stemCourseConId);

    /**
     * 新增保存课程结构信息
     */
    public int insertStemCourseCon(StemCourseCon stemCourseCon);

    /**
     * 修改保存部门信息
     */
    public int updateStemCourseCon(StemCourseCon stemCourseCon);

    /**
     * 删除部门管理信息
     */
    public int deleteStemCourseConById(Long stemCourseConId);
}
